/** 教程链接：
 * https://dart.cn/language/#inheritance
 */
// Dart 继承（扩展类）的示例

// 基类：Spacecraft（航天器）
class Spacecraft {
  // 成员变量
  final String name;
  final DateTime? launchDate;

  // 构造函数
  Spacecraft(this.name, this.launchDate);

  // 方法：打印航天器的基本信息
  void describe() {
    print('Spacecraft: $name');
    if (launchDate != null) {
      final launchYear = launchDate!.year;
      print('Launched: $launchYear');
    } else {
      print('Unlaunched');
    }
  }
}

// 子类：Orbiter（轨道器）继承自 Spacecraft
class Orbiter extends Spacecraft {
  double altitude; // 单位：千米（km）

  // 使用 super 来调用父类构造函数的 name 和 launchDate 参数
  Orbiter(super.name, super.launchDate, this.altitude);

  // 重写 describe 方法，添加更多信息
  @override
  void describe() {
    super.describe(); // 调用父类的 describe 方法
    print('Altitude: $altitude km');
  }
}

void main() {
  // 创建一个 Orbiter 实例
  final orbiter = Orbiter(
    'Mars Orbiter',
    DateTime(2013, 11, 5), // 发射时间
    500.0,                 // 高度（km）
  );

  // 调用方法，输出信息
  orbiter.describe();
}
